package com.ctsi.organise.common.api;

import com.ctsi.commons.util.response.Page;
import com.ctsi.organise.common.model.Person;
import com.ctsi.organise.common.model.UserLogin;

import java.util.List;
import java.util.Map;

public interface UserLoginServiceProxy {
    public static final String outerPerson = "out_";
    /**
     * 根据登陆名找到用户
     * @param loginName
     * @return
     */
    UserLogin findUserLoginByLoginName(String loginName);

    List<UserLogin> findUserLoginByPartyid(String partyId);

    Person getUserInfoByLoginId(String logInId, String partyId);

    /**
     * 根据用户名和密码查询用户是否存在
     *
     * @param loginName
     * @param password
     * @return
     */
    UserLogin findUserLoginByAccandPwd(String loginName, String password);

    /**
     * 根据用户登录id获取用户登录信息
     *
     * @param loginId
     * @return
     */
    UserLogin findById(String loginId);

    /**
     * 修改登录用户信息
     *
     * @param user
     */
    void updateUserLogin(UserLogin user);

    /**
     * 校验用户密码
     *
     * @param user
     * @param pwd
     * @return
     */
    boolean validatePass(String user, String pwd);

    /**
     * @param partyIds
     * @return
     */
    List<UserLogin> findUserLoginByPartyIds(List<String> partyIds);

    /**
     * 加入内部用户
     *
     * @param user
     */
    void insertInternalUser(UserLogin user);

    /**
     * 删除登录用户
     *
     * @param user 可以根据id或者loginName或者partyid删除，三者选其一
     */
    void delUserLogin(UserLogin user);

    /**
     * 修改登录用户密码
     *
     * @param loginName
     * @param oldPassword(原密码可以为空，如管理员修改用户密码是不需要验证初始密码的)
     * @param newPassword
     */
    void modifyPassword(String loginName, String oldPassword, String newPassword);

    /**
     * 返回登录用户 支持分页
     *
     * @param userName
     * @param action
     * @param map
     * @param startIndex
     * @return
     */
    Page<UserLogin> findUserLoginByPage(String userName, String action, Map map, int startIndex, int pageSize);

}
